package framework.service {
	import com.adobe.serialization.json.JSON;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.geom.Point;
	import flash.geom.Rectangle;
	import org.robotlegs.mvcs.Actor;

	/**
	 * @author Charlie MacIsaac
	 */
	
	public class BlitParser implements IParser {
		// PROPERTIES =============================================================================
		private var _spriteSheetLayout : Object;
		private var _bitmapData : BitmapData;
		
		private var _sprites : Array;
		
		// GETTERS + SETTERS ======================================================================
		// CONSTRUCTOR ============================================================================
		public function BlitParser() { }
		
		// PUBLIC =================================================================================
		public function parse(data : Object) : Object {
			_spriteSheetLayout  = JSON.decode(data.json);
			_bitmapData = data.image.bitmapData;
			parseSpriteSheets();
			
			data = new Object();
			data.sprites = _sprites;
			
			_bitmapData.dispose();
			_spriteSheetLayout = null;
			
			return data;
		}
		
		// PRIVATE ================================================================================
		private function parseSpriteSheets() : void {
			var origin : Point = new Point(0, 0);
			var spriteSheet : BitmapData;
			var spriteSheetRectangle : Rectangle = new Rectangle();
			
			_sprites = [];
			
			for each (var frameData : Object in _spriteSheetLayout.frames) {
				spriteSheet = new BitmapData(frameData.frame.w, frameData.frame.h, true, 0x000000);
				spriteSheet.copyPixels(	_bitmapData,
										new Rectangle(frameData.frame.x, frameData.frame.y, frameData.frame.w, frameData.frame.h),
										origin	);
				spriteSheet.lock();
				_sprites.push(spriteSheet);
			}
		}
		
		// LISTENERS ==============================================================================
	}
}